package com.ly.system.utils;

import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;

public class BCryptUtils {
    /**
     * ⽣成加密后密⽂
     *
     * @param password 密码
     * @return 加密字符串
     */
    public static String encryptPassword(String password) {
        BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
        return passwordEncoder.encode(password);
    }

    //从数据库查找密码,不能使用equals,经过加密后,二者肯定不同

    /**
     * 判断密码是否相同
     *
     * @param rawPassword 真实密码  用户输入密码
     * @param encodedPassword 加密后密文  从数据库查出加密后的密码
     * @return 结果
     */

    //根据数据库中查出的加密后的密码,提取当时加密的盐值
    public static boolean matchesPassword(String rawPassword, String encodedPassword) {
        BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
        //
        return passwordEncoder.matches(rawPassword, encodedPassword);
    }

//    public static void main(String[] args) {
//        System.out.println("这是第一种加密后的 :"+encryptPassword("123456"));
//        System.out.println("这是第二种:" + matchesPassword("123456","$2a$10$80CBnCXiFRtqgQ4peRV7se1eB4NgmJMXnbNYtG0voVHg7vdPhs.Qq"));
//    }
}